热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据开发|Hadoop分布式集群环境构建

一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一些参考。今天第一篇《Hadoop分布式集群环境构建&#x

一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一些参考。今天第一篇《Hadoop分布式集群环境构建(1)》终于和大家见面了。

集群主机规划

软件安装包准备

会将软件所有安装包放入百度云盘,以供大家方便下载。链接:http://pan.baidu.com/s/1i5CdjI9 密码:f7rn

安装环境准备

3.1

创建用户

      为每台机子创建一个不是root的用户,该集群是以hadoop来创建的。并且每台机子的用户以及密码都要相同。

操作命令:

每台服务器用root账户下:

useradd hadoop

echo "hadoop" | passwd --stdin  Hadoop

3.2

配置hosts文件以及network

集群中的所有机器的 /etc/hosts 文件内容均一致,都要将集群中的各 IP 和 主机名对应起来,而且都能互相ping通。如下:

修改集群所有机子的/etc/sysconfig/network文件,HOSTNAME要改成对应的主机名。如下:

安装jdk

首先解压该安装包:

tar -xvzf jdk-7u67-linux-x64.tar.gz  -C  /

对解压的安装包重新命名

mv jdk1.7.0_67 jdk

将jdk文件复制到/home/hadoop/目录下并赋予相应权限

cp  /jdk  /home/hadoop/

chown   -R  hadoop:hadoop /home/hadoop/jdk

配置jdk的环境变量:

vi /etc/profile

使以上配置环境变量生效:

Source  /etc/profile

以上步骤其余机子都需要操作一遍

ssh免密码通信

通过云盘中提供的一个脚本文件来实现,名称是zeno_ssh_update.sh。

首先需要创建一个目录:/home/zeno_programpag

然后将下载的脚本文件放入到这个目录下。

加入如下内容:

执行脚本文件(root用户下执行)

./zeno_ssh_update.sh hadoop hadoop

脚本后面跟的是用户名及用户密码

检查SSH免密码登录是否完成。

想系统学习大数据的话,可以加入大数据技术学习扣扣君羊:522189307

安装zookeeper

6.1

解压zookeeper

将该安装包解压到/home/hadoop/下

tar  -zxvf zookeeper-3.4.5-cdh5.4.0.tar.gz –C /home/hadoop/

6.2

修改配置文件

在/home/hadoop/zookeeper/conf目录下,复制一各名为zoo.cfg的文件

cp  zoo_sample.cfg  zoo.cfg

修改zoo.cfg中的文件内容

加入如下标注的内容

创建/tmp/zookeeper/目录,并赋予hadoop的所有组及所有者权限

mkdir  -p /tmp/zookeeper/

并创建myid文件,加入zoo.cfg中对应的数

将/home/Hadoop/zookeeper 复制到其他机子。

scp  -r /home/Hadoop/zookeeper/  hadoop@hadoop3:/home/hadoop/

scp  -r /home/Hadoop/zookeeper/  hadoop@hadoop5:/home/hadoop/

注意每台机子都需要创建myid这个文件,并修改对应的数字。

6.3

启动zookeeper服务(三台机子)

/home/hadoop/zookeeper/sbin/ zkServer.sh  start

6.4

查看zookeeper服务状态

出现以下的状态就说明zookeeper成功了

安装hadoop集群

7.1

解压hadoop安装包

tar  -zxvf hadoop-2.6.0-cdh5.4.0.tar.gz –C /home/hadoop/

chown -R hadoop:hadoop /home/hadoop/hadoop

7.2

修改配置文件

01

hadoop-env.sh文件

向其中添加如下两行:

export JAVA_HOME=/home/hadoop/jdk
export HADOOP_HOME=/home/hadoop/Hadoop

02

配置core-site.xml

#vi  core-site.xml 
 
 
 
     
       
        fs.defaultFS 
        hdfs://mycluster 
   
 
     
       
        hadoop.tmp.dir 
        /home/hadoop/hadoop/data/hadoop/tmp 
   
 

  dfs.journalnode.edits.dir

  /path/to/journal/node/local/data


     
       
        ha.zookeeper.quorum 
  hadoop5:2181,hadoop4:2181,hadoop3:2181 
   
 

需要手动创建:/home/hadoop/hadoop/data/hadoop/tmp目录

mkdir –p /home/hadoop/hadoop/data/hadoop/tmp

03

配置hdfs-site.xml

#vi hdfs-site.xml 

        

        dfs.journalnode.edits.dir

        /home/hadoop/hadoop/ha/journal

        dfs.permissions

        false

    

    

                dfs.permissions.enabled

        false

    

       

        dfs.replication

        3

    

        

        dfs.webhdfs.enabled

        true

    

dfs.namenode.name.dir

/home/hadoop/hadoop/dfs/name

dfs.datanode.data.dir

/home/hadoop/hadoop/dfs/data

  dfs.nameservices

  mycluster

  dfs.ha.namenodes.mycluster

  nn1,nn2

  dfs.namenode.rpc-address.mycluster.nn1

  hadoop3:8020

  dfs.namenode.rpc-address.mycluster.nn2

  hadoop4:8020

  dfs.namenode.http-address.mycluster.nn1

  hadoop3:50070

  dfs.namenode.http-address.mycluster.nn2

  hadoop4:50070

  dfs.namenode.shared.edits.dir

  qjournal://hadoop5:8485;hadoop4:8485;hadoop3:8485/mycluster

   dfs.ha.automatic-failover.enabled

   true

 

  dfs.client.failover.proxy.provider.mycluster

  org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

  dfs.ha.fencing.methods

  

    sshfence

    

  

 

  dfs.ha.fencing.ssh.private-key-files

  /home/hadoop/.ssh/id_rsa

  dfs.ha.fencing.ssh.connect-timeout

  30000

04

配置mapred-env.sh

加入

export JAVA_HOME=/home/hadoop/jdk

05

配置mapred-site.xml

    mapreduce.framework.name

    yarn

06

配置yarn-env.sh

export JAVA_HOME=/home/hadoop/jdk

07

配置yarn-site.xml

# vi  yarn-site.xml

   yarn.resourcemanager.ha.enabled

   true

 

 

   yarn.resourcemanager.cluster-id

   cluster1

 

 

   yarn.resourcemanager.ha.rm-ids

   rm1,rm2

 

 

   yarn.resourcemanager.hostname.rm1

   hadoop3

 

 

   yarn.resourcemanager.hostname.rm2

   hadoop4

 

 

   yarn.resourcemanager.zk-address

   hadoop5:2181,hadoop4:2181,hadoop3:2181

 

  

   yarn.nodemanager.aux-services

   mapreduce_shuffle

  

08

配置slaves

以上hadoop的配置就算完成了。

将/home/Hadoop/Hadoop/ 拷贝到其他机子上

scp –r /home/Hadoop/Hadoop/  hadoop@hadoop3:/home/Hadoop/

scp –r /home/Hadoop/Hadoop/  hadoop@hadoop5:/home/Hadoop/

启动集群

8.1

格式换命名空间(hadoop4)

/home/hadoop/hadoop/bin/hdfs zkfc -formatZK

8.2

启动journalnode(三台)

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start journalnode

通过jps查看一下出现journalnode说明成功

8.3

格式化master节点并启动hadoop服务

/home/hadoop/hadoop/bin/hadoop namenode -format mycluster

启动hadoop服务

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode

将hadoop4这台机子格式化的文件拷贝到hadoop3上

格式化后的文件是放在/home/hadoop/hadoop/dfs/name这个目录下的。

scp /home/hadoop/hadoop/dfs/name hadoop@hadoop3:/home/hadoop/hadoop/dfs/name/

在hadoop3上启动hadoop服务

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode

8.4

hadoop4和hadoop3节点上启动zkfs

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start zkfc

8.5

启动DataNode(三台)

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start datanode

8.6

启动yarn(一台master)

/home/hadoop/hadoop /sbin/start-yarn.sh

Ok,所有的进程都已启动完成了。

网页通过端口访问hadoop:http://192.168.211.88:50070/

以下的效果说明已经完全构建了一个HA高可用的hadoop大数据集群环境。

集群环境mapreduce测试:

执行hadoop自带的mapreduce是否能够成功?

/home/hadoop/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.0.jar wordcount /wangyd/  /output/wordcount1

发现mapreduce执行也是没有问题了,说明整个集群搭建ok了。


推荐阅读
author-avatar
mobiledu2502898543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有